import java.util.LinkedList;
import java.util.List;
-import org.xenoserver.control.Command;
import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
+import org.xenoserver.control.PartitionManager;
+import org.xenoserver.control.Settings;
+import org.xenoserver.control.VirtualDiskManager;
+import org.xenoserver.control.XML;
/**
* Subclasses of Parser know how to parse arguments for a given command
}
return result;
}
+
+ protected void loadState() {
+ XML.load_state( PartitionManager.it, VirtualDiskManager.it, Settings.STATE_INPUT_FILE );
+ }
+
+ protected void saveState() {
+ XML.dump_state( PartitionManager.it, VirtualDiskManager.it, Settings.STATE_OUTPUT_FILE );
+ }
}
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
import org.xenoserver.control.CommandDomainDestroy;
import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
-import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.CommandDomainList;
+import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
import org.xenoserver.control.Domain;
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
-import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.CommandDomainNew;
+import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
public class ParseDomainNew extends CommandParser {
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
-import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.CommandDomainStart;
+import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
public class ParseDomainStart extends CommandParser {
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
-import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.CommandDomainStop;
+import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
public class ParseDomainStop extends CommandParser {
package org.xenoserver.cmdline;
-import java.util.Arrays;
import java.util.LinkedList;
-import java.util.List;
import org.xenoserver.control.CommandFailedException;
import org.xenoserver.control.Defaults;
package org.xenoserver.cmdline;
import java.util.LinkedList;
-import java.util.List;
-import org.xenoserver.control.Command;
import org.xenoserver.control.Defaults;
public class ParseHelp extends CommandParser {
import org.xenoserver.control.Mode;
import org.xenoserver.control.Partition;
import org.xenoserver.control.PartitionManager;
-import org.xenoserver.control.Settings;
-import org.xenoserver.control.XML;
public class ParsePhysicalGrant extends CommandParser {
public void parse(Defaults d, LinkedList args) throws ParseFailedException, CommandFailedException {
mode = Mode.READ_ONLY;
// Initialise the partition manager and look up the partition
- XML.load_state( PartitionManager.it, Settings.STATE_INPUT_FILE );
+ loadState();
Partition p = PartitionManager.it.get_partition(partition_name);
if ( p == null )
import org.xenoserver.control.Defaults;
import org.xenoserver.control.Extent;
import org.xenoserver.control.Library;
-import org.xenoserver.control.Mode;
import org.xenoserver.control.Partition;
import org.xenoserver.control.PartitionManager;
-import org.xenoserver.control.Settings;
-import org.xenoserver.control.XML;
public class ParsePhysicalList extends CommandParser {
throw new ParseFailedException("Expected -n<domain_id>");
// Initialise the partition manager
- XML.load_state( PartitionManager.it, Settings.STATE_INPUT_FILE );
+ loadState();
CommandPhysicalList list = new CommandPhysicalList( d, domain_id );
String output = list.execute();
import org.xenoserver.control.Extent;
import org.xenoserver.control.Partition;
import org.xenoserver.control.PartitionManager;
-import org.xenoserver.control.Settings;
-import org.xenoserver.control.XML;
public class ParsePhysicalRevoke extends CommandParser {
public void parse(Defaults d, LinkedList args) throws ParseFailedException, CommandFailedException {
throw new ParseFailedException("Expected -p<partition_name>");
// Initialise the partition manager and look up the partition
- XML.load_state( PartitionManager.it, Settings.STATE_INPUT_FILE );
+ loadState();
Partition p = PartitionManager.it.get_partition(partition_name);
if ( p == null )
*/
public String execute() throws CommandFailedException {
Runtime r = Runtime.getRuntime();
- int rc = 0;
Vector v = new Vector();
String outline;
BufferedReader in;
*/
public String execute() throws CommandFailedException {
Runtime r = Runtime.getRuntime();
- int rc = 0;
String outline;
BufferedReader in;
String output = null;
package org.xenoserver.control;
-import java.net.*;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
public class InetAddressPattern
{
{
InetAddressPattern result = new InetAddressPattern ();
char[] ca = t.toCharArray ();
- int idx = 0;
int len = ca.length;
try {
return null;
}
}
+
+ /**
+ * Formats a number of bytes in whichever way makes most sense based
+ * on magnitude and width.
+ *
+ * @param size Number of bytes.
+ * @param width Width of field - at least 5, plz.
+ * @param prefix Set to 1 for left justify
+ * @return The formatted string.
+ */
+ public static String format_size(long size,int width,int prefix) {
+ char[] suffixes = { ' ', 'k', 'M', 'G' };
+ int suffix = 0;
+ long before = size;
+ float after = 0;
+
+ while ( before > 10000 ) {
+ after = ((float)(before % 1024)) / 1024;
+ before /= 1024;
+ suffix++;
+ }
+
+ StringBuffer num = new StringBuffer(width);
+ num.append( Long.toString( before ) );
+ if ( after != 0 ) {
+ int space = width - num.length() - 2;
+ if ( space > 0 ) {
+ num.append( '.' );
+ if ( space > 3 )
+ space = 3;
+ num.append( Integer.toString( (int) (after * Math.pow(10,space))));
+ }
+ }
+ num.append( suffixes[suffix] );
+
+ return format(num.toString(),width,prefix);
+ }
}
package org.xenoserver.control;
-import java.io.*;
+import java.io.PrintWriter;
public class
Partition
package org.xenoserver.control;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
-import java.util.Enumeration;
/**
* PartitionManager manages the partitions on the machine. It is a Singleton
void
dump_xml (PrintWriter out)
{
- int loop;
-
out.println("<partitions>");
for (Enumeration e = partition_map.elements() ; e.hasMoreElements() ;)
{
public static final String PARTITIONS_FILE = System.getProperty("PARTITIONS_FILE", "/proc/partitions");
public static final String STATE_INPUT_FILE = System.getProperty("STATE_INPUT_FILE", "/var/lib/xen/vdstate.xml");
public static final String STATE_OUTPUT_FILE = System.getProperty("STATE_OUTPUT_FILE", "/var/lib/xen/vdstate.xml");
+ public static final int SECTOR_SIZE = Integer.parseInt( System.getProperty("SECTOR_SIZE", "512") );
public static File getDefaultsFile() {
StringTokenizer tok = new StringTokenizer (DEFAULTS_PATH, ":");